﻿interface LimitedCallback<TArg> {
    (args: TArg): any;
}

interface ICallLimiter<TArg> {
    (
        callback: (args: TArg) => any,
        accum?: (oldArgs: TArg, newArgs: TArg) => TArg
    ): LimitedCallback<TArg>;
}